package edu.csl.study.springboot.eventDemo.jdkobserver;

import java.util.Observable;

/**
 * 来源：https://blog.csdn.net/zrudong/article/details/78567473
 * 支付状态变更做为一个可观察者；
 *
 * 我们针对JDK给出的观察者模式的解决方案总结几点：
 *
 *  1、 Observable实现了大部分的逻辑，没有很好地进行抽象，灵活性降低了
 *
 *  2、存在2个潜在的问题：一个刚刚加入的观察者错过了通知；一个刚刚删除的观察者被错误的通知
 *
 *  3、Observable实现的方法采用synchronized，操作同一个方法时串行，可能会存在效率问题
 */
public class PaymentStatusObservable extends Observable {

    public void updatePaymentStatus(int newStatus) {
        // 业务逻辑操作
        System.out.println("更新新的支付状态为：" + newStatus);

        // 通知观察者
        this.setChanged();//需要调用一下这这方法，表示被观察者的状态已发生变更，Observable才会通知观察者
        this.notifyObservers();
    }
}